"""
"""


import asyncio
import time


async def calculate(name: str, delay: int):
    print(f"{name} step1")
    await asyncio.sleep(delay)
    print(f"{name} step2")


async def main():
    t1 = time.perf_counter()

    # 第一种，实际上就是串行执行
    # print("A start")
    # await calculate("A", 2)  # 等待，即跳转到这里执行
    # print("A completed")
    #
    # print("B start")
    # await calculate("B", 2)  # 等待，即跳转到这里执行
    # print("B completed")

    # 第二种，先把任务加入事件循环  实际上已经开始运行了
    # 任务创建即调度
    # 这种才是 我们需要的并发
    print("A coroutine start")
    task1 = asyncio.create_task(calculate("A", 2))
    print("B coroutine start")
    task2 = asyncio.create_task(calculate("B", 4))

    await task1
    await task2

    t2 = time.perf_counter()
    print(f"consume: {t2 - t1}")


asyncio.run(main())

